Yazzie MSX Remastered
---------------------
(c) RetroSouls 2019, 2020

This is a remastered version of the game Yazzie that was originally released
for the ZX-Spectrum and MSX1. The list of improvements is somewhat long.


1) ChangeLog:

- Redesigned the title and menu screens to match the box art and the
  traditional cleaner MSX1 style
- Restored the complete menu screen image, like the speccy version has. The
  original MSX version had a simpler screen
- Fine tuned the colors of most of the tiles of the game
- Implemented lives and game over. Extra lives are given every 4 completed
  stages
- Added 10 more stages, for a total of 30  (10 stages/theme)
- It’s now possible to load user designed stages by pressing L on the menu
- Fine-tuned the flash timing of the PUSH FIRE text on the title screen
- The intro screen can now be skipped by pressing a button
- Demo autoplay, activated after the menu music loops 2 times
- The hero doesn't stop anymore when diagonals are pressed
- The game now extends the bridges without freezing the gameplay. But be
  careful! While one bridge is being extended, the other bridge buttons will be
  blocked.   ;)
- The enemy sprites are painted with specific colors for spawning and death.
  Also, different enemies have now different colors too.
- The hero sprite now changes to gray on his death
- The music replayer is now interrupt-driven
- Enhanced the game random number generator
- Turbofixed the 50Hz/60Hz detection
- Bugfixed the getmyslot detection routine on non-expanded slots
- All songs now play at exact the same speed either at 50Hz or 60Hz video
  frequency (i.e., the stage 2 song was played faster at 60Hz on the original
  release)
- Added game pause (STOP key or button-2)
- button1+unpause = restart level. Allows restart on the joystick
- Press the function keys anytime to select the palette on MSX2 or higher
- HIDlib is now used to allow the joystick to be connected to any port, and to
  avoid conflict with mice, touchpads, paddles etc
- The ending credits will now be finished after it has looped for 3 times, and
  you can quit it after it looped at least 1 time
- The RAM is now cleared on init
- Fixed all direct I/O places. The game now passes the Acid2Test
- When available, the turbo is enabled on boot
- Fixed a bug that allowed the end game screen to be restarted or skipped
- Several speed and RAM/ROM space optimisations everywhere
- Fixed a bug on the tele-transporter that released the enemies and hero 1 pixel
  below the normal line, making them walk at the incorrect height
- Implemented the angry enemy mode. When an enemy sees you directly, he gets
  angry and starts to chase you restlessly until he calms down. This was
  also added as part of the gamification tactics to win certain stages
- Fixed the music corruption that happened under certain conditions
- It's now possible to warp from right to left and vice-versa
- Fixed a bug that made the enemies freeze when going through narrow spaces to
  the left
- Implemented a subtle special ability that only the enemies have
- Fixed a bug where the mine explosion didn't clear all tiles around it
- Enemies now commit suicide when they detect that they're trapped
- Fixed a bug that caused the enemies to go through bridge buttons when falling
- Solved the tendency of the enemy AI to keep turning around up/down without
  leaving the same ladder.
- Rewrote hero, enemy and sprite code to use data structures
- Fixed the the action button (dig, start bridges) detection sometimes failing
- Fixed the hold down jumps more than 1 bridge bug
- Decompress the title and menu screen using only MegaLZ compression
- Implemented a sprite multiplexer. This allows more than 4 sprites to be used
  in the game, and this was used to add more enemies to some levels, to enhance
  the experience.
- Big overhaul of the enemy processing engine. It now supports up to 31
  simultaneous enemies instead of 3.
- Fixed a bug where the mines processor code would strafe garbage on the memory,
  causing glitches on the bridge building and music playback
- New sfx for: start/stage completed (the original was ripped from a famous MSX
  game of a big impetuous software house), pause, enemy spawn, extra life, mine
  explosion and teleport.
- Upgraded the ayFX replayer to v2.1, with multichannel support
- Implemented the stage advance transitions (a bit different form the speccy,
  to be quicker)
- Implemented titles for the levels. This was initially done for the user
  custom level support, but I thought it was fun to add titles to the built-in
  levels too
- Fixed a bug that caused the hero landing sfx to be repeatedly played all over
  the fall, and allowed the player to walk during the fall on some
  circumstances


2) Gameplay

Help the gold seeker collect all the gold from the strange mansion, whilst
avoiding the enemies. Collect pickaxes to dig through the brick floors.

Also:
- There are mines on certain places, and they'll explode after 10 ticks.
- Only one bridge can be extended at a time. When a bridge is being extended,
  the other bridge buttons will be inactive.
- You and the enemies have different abilities. There are things that you can
  do and the enemies don't, and vice-versa.
- This is an oldskool game, so the there's no spoonfeed tutorial, and the subtle
  details won't be described in this manual. The game you give you hints on the
  design of the stages, so you can learn in the process. You must exercise
  observation and experiment what are your character habilities, exploit the
  imposed restrictions, the enemy behaviour, find out where are the real limits/
  features/quirks etc in order to advance. It's all part of the game. Your
  victory must be earned with your brain! 

3) Controls

- Keyboard:
 - Directionals: move your character
 - SPACE: action button. Dig holes (if you have a pickaxe), activate bridges etc
 - GRAPH: secondary button. Used mainly in the file selector, to advance pages.
 - STOP : pause the game
 - ESC  : kills your character (in case you get stuck)
 - F1 to F5: Select the palette
   - F1 = MSX1 palette
   - F2 = MSX2 palette
   - F3 = CoolColors palette
   - F4 = ZX-Spectrum palette
   - F5 = Commodore 64 palette

- Joystick
  - Directionals: move your character
  - Button-1: action button. Dig holes (if you have a pickaxe), activate
    bridges etc
  - Button-2: Pause the game
  - If you hold the button-1 while unpausing the game, it will kill your
    character. (in case you get stuck)

4) Custom Levels

It's now possible to design your own levels (must be drawn with an external
tool, see ahead). To load them, press L on the menu screen and select the
desired level from the file manager.


To edit your levels, use an editor named Tiled, and compile the map from
JSON to YAZ using the Bash scripts provided in the EXTRAS folder. This folder
contains:
- Two sample .YAZ levels
- Empty templates for the 3 themes of the game
- Bash scripts to compile the .json maps edited by Tiled to the .YAZ format
  used by the game
- The game soundtrack in PT3 format
- The zipped game source code (except some libraries published on
  http://frs.badcoffee.info)


6) For developers, this is the structure of a YAZ user level file:

Offset	type	Content
+0000h	string	Header. Always "Yazzie1"
+0007h	byte	Theme number (0,1~3). Selects one of the three available themes.
		0 means that a random theme will be selected each time.
+0008h	byte	Music track number (0,1~6). Selects one of the 6 available
		music tracks. 0 means that a random track will be selected
		each time.
+0009h	string	Author initials, in ASCII chars. Always 3 chars long, so fill
		the unused chars with zeroes.
+000Ch	string	Level Title, in ASCII chars. Must be terminated with FFh.
+0020h	array	Level map. Array of 32x23 bytes containing tile indexes

		Tiles:
		00h=Transparent space
		01h=Gold bars
		02h=Ladder
		03h=Fire
		04h=Pickaxe
		05h=Round Window, TL
		06h=Round Window, TR
		07h=Square Window L
		08h=Square Window R
		09h=Spike
		0Ah=Down arrow button1
		0Bh=Down arrow button2
		0Ch=Round Window, BL
		0Dh=Round Window, BR
		0Eh=3.Small brick
		0Fh=4.Medium brick
		10h=5.Normal brick, center
		11h=Left torch
		12h=Bridge
		13h=Right torch
		14h=Wall fire bowl
		15h=Land mine inactive
		16h=Left arrow button unused
		17h=Right arrow button unused
		18h=Normal brick,border
		19h=Bridge builder
		1Ah=Left arrow button used
		1Bh=Right arrow button used
		1Ch=Land mine active
		1Dh=Floor fire bowl
		1Eh=Hero icon
		1Fh=Concrete brick
		1Fh=Concrete brick
		20h=Hero
		21h=Enemy
		22h=Red block


5) Special Thanks
- MSXdev team, for the stymulus for the development for the MSX platform
- OpenMSX team, for their excellent emulator and debugger
- Paulo Peccin, for the incredible webMSX emulator that allows testers to
  easily run the game beta version without any need of prior MSX knowledge
- MRC crew, for the place where MSX hobbyists can meet and exchange ideas
- The SjASMPlus assembler team
- Sandro Sebastião Singer and Mauro Sans Jr, for betatesting and ideas


===========================================================================
	                     License
                           Terms of use
---------------------------------------------------------------------------

1) This patch is gratis for non-commercial purposes, and the author retains
   its copyright. The original author, RetroSouls, must be contacted to
   authorise any commercial distribution.

2) If you want to use this game for commercial purposes you MUST contact
   the original author, RetroSouls, prior to negotiate the terms and conditions.
   Send an e-mail to submit@retrosouls.net

3) This game is provided ‘as-is’, without any express or implied warranty.
   In no event will the author be held liable for any damages resulting from the
   use of this software. 

4) USE THIS SOFTWARE SOLELY AT YOUR OWN RISK.


===========================================================================
                          Donations
---------------------------------------------------------------------------
 If you like this game and want to show your appreciation by donating any
 amount, or MSX hardware, it will be very welcome and will help future
 developments.
 Donations can be done via PayPal to https://www.paypal.me/retrosouls, and for
 MSX hardware, try contacting submit@retrosouls.net . 

 If you also like the enhancements and fixes made on this remastered version and
 want to show your appreciation you can donate via PayPal to
 sdsnatcheralpha@gmail.com .


